#ifndef H_PMI_H
#define H_PMI_H

/** \file pmi.h
 *  \brief This file defines all of the PMI interfaces for inclusion.
 */

#define PMI_VERSION 1
#define PMI_SUBVERSION 1

int PMI_Init(int *spawned);
int PMI_Initialized();
int PMI_Get_size(int *size);
int PMI_Get_rank(int *rank);
int PMI_Barrier();
int PMI_Finalize();
int PMI_KVS_Get_my_name(char *kvsname);
int PMI_KVS_Get_name_length_max();
int PMI_KVS_Get_key_length_max();
int PMI_KVS_Get_value_length_max();
int PMI_KVS_Create(char *kvsname);
int PMI_KVS_Destroy(const char *kvsname);
int PMI_KVS_Put(const char *kvsname, const char *key, const char *value);
int PMI_KVS_Commit(const char *kvsname);
int PMI_KVS_Get(const char *kvsname, const char *key, char *value);
int PMI_KVS_iter_first(const char *kvsname, char *key, char *value);
int PMI_KVS_iter_next(const char *kvsname, char *key, char *value);
int PMI_Abort(int exit_code, const char error_msg[]);

#endif
